package com.nt.train.util.expands;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import java.util.Set;
/**
 * 系统启动完成后，执行一些操作<br>
 * 将自己定义的扫描注册到Spring中的实例取出放到一个全局 Map 中。
 * ApplicationRunner Spring提供的接口，帮助在系统启动后操作一些业务
 * @author hlf
 * @version 1.0
 * @date 2022/9/28 22:04
 */
@Slf4j
@Order(1)
@Component
public class ApplicationRunnerSupport  implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        // 获得注册 bean 时使用的bean命名
        Set<String> beanNames = BeanFactorySupport.getBeanNames();
        for (String beanName : beanNames) {
            Object bean = SpringUtils.getBean(beanName);
            CommonsUtil.BEANS.put(beanName, bean);
            log.info("注册Bean {} 成功！", bean);
        }
        log.info("自定义@Business注册结束，共注册 {} 个 Bean", CommonsUtil.BEANS.size());
        BeanFactorySupport.getBeanNames().clear();
    }
}
